﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using bolsatrabajo.Dominio.DAO;

namespace bolsatrabajo.Persistencia.DAO
{
    public class OfertanteDAO
    {
        private String cadenaConexion = "Data Source=(local);Initial Catalog=bdbolsatrabajo; User Id=root;Password=12345678;";
        private SqlConnection conexion;

        public OfertanteDAO()
        {
             conexion = new SqlConnection(cadenaConexion);
        }
        public Ofertante CrearOfertante(Ofertante ofertante)
        {
            if (this.ObtenerOfertante(ofertante.Correo) == null)
            {
                conexion.Open();
                String sentencia = "INSERT INTO tbofertante VALUES('" + ofertante.Ruc + "','" + ofertante.RazonSocial + "','" + ofertante.Correo + "','" + ofertante.Contrasena+ "')";
                SqlCommand comando = new SqlCommand(sentencia, conexion);
                comando.ExecuteNonQuery();
                conexion.Close();
            }else{
                throw new Exception("Ofertante ya existe en BD");
            }
            return this.ObtenerOfertante(ofertante.Correo);
        }
        public Ofertante ObtenerOfertante(String correo)
        {
            conexion.Open();
            String sentencia = "SELECT correo, ruc, razonsocial, contrasena FROM tbofertante WHERE correo='" + correo + "'";
            SqlCommand comando = new SqlCommand(sentencia, conexion);
            SqlDataReader resultado = comando.ExecuteReader();
            Ofertante ofertante = null;
            if (resultado.HasRows)
            {
                resultado.Read();
                ofertante = new Ofertante();
                ofertante.Correo = (String)resultado["correo"];
                ofertante.RazonSocial = (String)resultado["razonsocial"];
                ofertante.Ruc = (String)resultado["ruc"];
                ofertante.Contrasena = (String)resultado["contrasena"];
            }
            conexion.Close();
            return ofertante;
        }
        public void EliminarOfertante(String correo)
        {
            if (this.ObtenerOfertante(correo) != null)
            {
                conexion.Open();
                AvisoDAO avisosDeOfertante = new AvisoDAO();
                if (avisosDeOfertante.ObtenerxCorreoOfertante(correo) != null)
                {
                    String deleteEnAviso = "DELETE FROM tbaviso WHERE correoofertante='" + correo + "'";
                    SqlCommand comando1 = new SqlCommand(deleteEnAviso, conexion);
                    comando1.ExecuteNonQuery();
                }
                String deleteEnOfertante = "DELETE FROM tbofertante WHERE correo='" + correo + "'";
                SqlCommand comando2 = new SqlCommand(deleteEnOfertante, conexion);
                comando2.ExecuteNonQuery();
                conexion.Close();
            }
            else
            {
                throw new Exception("El Ofertante no existe");
            }
        }
        public Ofertante ModificarOfertante(Ofertante ofertante)
        {
            if (this.ObtenerOfertante(ofertante.Correo) != null)
            {
                conexion.Open();
                String sentencia = "UPDATE tbofertante SET razonsocial='" + ofertante.RazonSocial + "', ruc='" + ofertante.Ruc + "', contrasena='" + ofertante.Contrasena + "'";
                SqlCommand comando = new SqlCommand(sentencia, conexion);
                comando.ExecuteNonQuery();
                conexion.Close();
            }
            else
            {
                throw new Exception("El Ofertante no existe");
            }
            return this.ObtenerOfertante(ofertante.Correo);
        }
    }
}